.btn {
  @apply inline-flex items-center justify-center px-4 font-semibold transition-all;

  &:focus,
  &:focus-within {
    @apply outline-2 outline-offset-4;
  }
  &:hover {
    filter: brightness(95%);
  }

  // Primary
  &--primary {
    color: hsla(var(--primary-fg));
    background-color: hsla(var(--primary-bg)) !important;
    &:hover {
      filter: brightness(65%);
    }

    // Variant soft primary
    &.btn--soft {
      background-color: hsla(var(--primary-bg-soft)) !important;
      color: hsla(var(--primary-bg));
    }

    // Variant outline primary
    &.btn--outline {
      background-color: transparent !important;
      border: 1px solid hsla(var(--primary-bg));
      color: hsla(var(--primary-bg));
    }
  }

  // Ghost
  &--ghost {
    background-color: transparent !important;
    &.btn--soft {
      background-color: transparent !important;
    }

    // Variant outline ghost
    &.btn--outline {
      background-color: transparent !important;
      border: 1px solid hsla(var(--ghost-border));
    }
  }

  // Destructive
  &--destructive {
    color: hsla(var(--destructive-fg));
    background-color: hsla(var(--destructive-bg)) !important;
    &:hover {
      filter: brightness(65%);
    }

    // Variant soft destructive
    &.btn--soft {
      background-color: hsla(var(--destructive-bg-soft)) !important;
      color: hsla(var(--destructive-bg));
    }

    // Variant outline destructive
    &.btn--outline {
      background-color: transparent !important;
      border: 1px solid hsla(var(--destructive-bg));
      color: hsla(var(--destructive-bg));
    }
  }

  // Disabled
  &:disabled {
    color: hsla(var(--disabled-fg));
    background-color: hsla(var(--disabled-bg)) !important;
    cursor: not-allowed;

    &:hover {
      filter: brightness(100%);
    }
  }

  // Icon
  &--icon {
    width: 24px;
    height: 24px;
    padding: 2px;
    &:hover {
      background-color: hsla(var(--icon-bg)) !important;
    }

    &.btn--outline {
      background-color: transparent !important;
      border: 1px solid hsla(var(--icon-border));
      &:hover {
        background-color: hsla(var(--icon-bg)) !important;
      }
    }
  }

  // Size
  &--small {
    @apply h-6 px-2;
    font-size: 12px;
    border-radius: 4px;
    &.btn--icon {
      width: 24px;
      height: 24px;
      padding: 2px;
    }
  }

  &--medium {
    @apply h-8;
    border-radius: 6px;
    &.btn--icon {
      width: 24px;
      height: 24px;
      padding: 2px;
    }
  }

  &--large {
    @apply h-9;
    border-radius: 8px;
    &.btn--icon {
      width: 24px;
      height: 24px;
      padding: 2px;
    }
  }

  &--block {
    @apply w-full;
  }
}
